import java.util.Arrays;
import java.util.HashMap;
import java.util.Scanner;



public class demo {


    //    队伍的水平值等于该队伍队员中第二高水平值，为了所有队伍的水平值总和最大的解法，也就是说每个队伍的
//    第二个值是尽可能大的值。所以实际值把最大值放到最右边，最小是放到最左边。
    public static void main1(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        long[] arr = new long[3*n];//这里要使用long  不用int类型 防止输入的n太大导致int溢出
        for (int i = 0; i < arr.length; i++) {
            arr[i] = sc.nextInt();
        }
        Arrays.sort(arr);//排序 小到大
        long sum = 0;
//        每次都是最大两个数和最小一个数组成一组  使用我们要选择排序第二大的开始  往前（2位）一直加n个
        for (int i = arr.length-1; n > 0 ; i-=2) {
            sum += arr[i-1];
            n--;
        }
        System.out.println(sum);

//          2
//          5 2 8 5 1 5
    }




//    删除公共字符
//    输入两个字符串，从第一字符串中删除第二个字符串中所有的字符。例如，输入”They are students.”和”aeiou”，
//    则删除之后的第一个字符串变成”Thy r stdnts.”

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String str = sc.nextLine();
        String str2 = sc.nextLine();
        HashMap<Character,Integer> map = new HashMap<>();
        for (int i = 0; i < str2.length(); i++) {
//            str2.charAt(i)将字符串按转换成字符
            if (map.get(str2.charAt(i)) == null) {
                map.put(str2.charAt(i), 1);
            }else {
                map.put(str2.charAt(i), map.get(str2.charAt(i))+1);
            }
        }
        String ret = "";
        for (int i = 0; i < str.length(); i++) {
            if (map.get(str.charAt(i)) == null) {
                ret += str.charAt(i);
            }
        }
        System.out.println(ret);
    }
//    They are students
//    aeiou
//    Thy r stdnts
}